package br.unp.tasi.loja.entidades;

import java.io.Serializable;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author jfrank
 */
@Entity
@Table(name = "usuario")
public class Usuario implements Serializable {

  private static final long serialVersionUID = 1L;
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;
  @Column(unique = true, nullable = false)
  private String login;
  @Column(nullable = false)
  private String senha;
  @Column(nullable = false)
  private Boolean administrador;
  @Column(nullable = false)
  private String nome;
  @OneToMany(mappedBy = "usuario", cascade = CascadeType.ALL)
  private List<Pedido> pedidos;

  public Usuario() {
    this.login = "";
    this.senha = "";
    this.id = 0L;
  }

  public Long getId() {
    return id;
  }

  public void setId(Long id) {
    this.id = id;
  }

  @Override
  public int hashCode() {
    int hash = 0;
    hash += (id != null ? id.hashCode() : 0);
    return hash;
  }

  @Override
  public boolean equals(Object object) {
    // TODO: Warning - this method won't work in the case the id fields are not set
    if (!(object instanceof Usuario)) {
      return false;
    }
    Usuario other = (Usuario) object;
    if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
      return false;
    }
    return true;
  }

  @Override
  public String toString() {
    return "br.unp.tasi.loja.entidades.Cliente[id=" + id + "]";
  }

  /**
   * @return the login
   */
  public String getLogin() {
    return login;
  }

  /**
   * @param login the login to set
   */
  public void setLogin(String login) {
    this.login = login;
  }

  /**
   * @return the senha
   */
  public String getSenha() {
    return senha;
  }

  /**
   * @param senha the senha to set
   */
  public void setSenha(String senha) {
    this.senha = senha;
  }

  /**
   * @return the administrador
   */
  public Boolean isAdministrador() {
    return administrador;
  }

  /**
   * @param administrador the administrador to set
   */
  public void setAdministrador(Boolean administrador) {
    this.administrador = administrador;
  }

  /**
   * @return the pedidos
   */
  public List<Pedido> getPedidos() {
    return pedidos;
  }

  /**
   * @param pedidos the pedidos to set
   */
  public void setPedidos(List<Pedido> pedidos) {
    this.pedidos = pedidos;
  }

  /**
   * @return the nome
   */
  public String getNome() {
    return nome;
  }

  /**
   * @param nome the nome to set
   */
  public void setNome(String nome) {
    this.nome = nome;
  }
}
